package com.zenithmind.news.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 用户行为实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("news_user_behavior")
@Schema(description = "用户行为实体")
public class UserBehavior extends BaseEntity {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private String userId;

    /**
     * 新闻ID
     */
    @Schema(description = "新闻ID")
    private String newsId;

    /**
     * 行为类型（1-浏览，2-点赞，3-收藏，4-分享，5-评论，6-搜索）
     */
    @Schema(description = "行为类型（1-浏览，2-点赞，3-收藏，4-分享，5-评论，6-搜索）")
    private Integer behaviorType;

    /**
     * 行为值（如阅读时长、搜索关键词等）
     */
    @Schema(description = "行为值（如阅读时长、搜索关键词等）")
    private String behaviorValue;

    /**
     * 行为评分（用于推荐算法）
     */
    @Schema(description = "行为评分（用于推荐算法）")
    private Double score;

    /**
     * 设备类型（1-PC，2-手机，3-平板）
     */
    @Schema(description = "设备类型（1-PC，2-手机，3-平板）")
    private Integer deviceType;

    /**
     * 用户代理
     */
    @Schema(description = "用户代理")
    private String userAgent;

    /**
     * IP地址
     */
    @Schema(description = "IP地址")
    private String ipAddress;

    /**
     * 地理位置
     */
    @Schema(description = "地理位置")
    private String location;

    /**
     * 来源页面
     */
    @Schema(description = "来源页面")
    private String referer;

    /**
     * 会话ID
     */
    @Schema(description = "会话ID")
    private String sessionId;

    /**
     * 行为时间
     */
    @Schema(description = "行为时间")
    private LocalDateTime behaviorTime;

    /**
     * 持续时长（秒）
     */
    @Schema(description = "持续时长（秒）")
    private Integer duration;
}
